#ifndef TABLAPERSONAS_H_
#define TABLAPERSONAS_H_

#include "Tabla.h"
#include <string>
#include <list>
#include "tools/MemoriaCompartida.h"
#include "tools/Semaforo.h"
#include "registrosTablas.h"

#define SEPARADOR_REG '?'
#define SEPARADOR_CAMPO '|'

#define MAX_REGISTROS 300

struct personas {
	PersonaType persona[MAX_REGISTROS];
};

class TablaPersonas : public Tabla {
private:
	MemoriaCompartida<personas> registros;
	Semaforo* accesoRegistros;

	bool creada;

	void inicializar();
	void cargarDeArchivo();
	void guardarAArchivo();

	std::list<mensajes::RespuestaType> select(mensajes::ConsultaType consulta);
	std::list<mensajes::RespuestaType> delet(mensajes::ConsultaType consulta);
	std::list<mensajes::RespuestaType> update(mensajes::ConsultaType consulta);
	std::list<mensajes::RespuestaType> insert(mensajes::ConsultaType consulta);
public:
	TablaPersonas();
	virtual ~TablaPersonas();

	int abrir();
	int cerrar();
	std::list<mensajes::RespuestaType> ejecutar(mensajes::ConsultaType consulta);
};

#endif /* TABLAPERSONAS_H_ */
